package com.fastloan.mgt.customer.model;

import com.fastloan.mgt.customer.anno.EnumObj;
import com.fastloan.mgt.customer.anno.TagAnno;
import com.fastloan.mgt.customer.enums.CustomerEnums;
import com.kawins.base.baseabs.BaseModel;

import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Transient;
import java.util.Date;

/**
 * @author gelon
 *         createTime 2017/11/06
 *         客户信息
 */
@javax.persistence.Table(name = "ZY_CUSTOMER")
public class ZyCustomer extends BaseModel<String> {


    /**
     * 客户id
     */
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @TagAnno(name = "客户id")
    private String id;
    /**
     * 性别
     */
    @TagAnno(name = "性别")
    private Integer gender;


    @Transient
    @EnumObj(mapping = "gender")
    private CustomerEnums.Gender[] genderEnum = CustomerEnums.Gender.values();

    /**
     * 手机号码
     */
    @TagAnno(name = "手机号码")
    private String phoneNum;
    /**
     * 出生日期
     */
    @TagAnno(name = "出生日期")
    private Date birthday;
    /**
     * 学历 0 文盲 1小学 2初中3 中专 4高中 5大专 6本科 7 硕士 8博士 9博士后
     */
    @TagAnno(name = "学历 0 文盲 1小学 2初中3 中专 4高中 5大专 6本科 7 硕士 8博士 9博士后")
    private Integer education;

    @Transient
    @EnumObj(mapping = "education")
    private CustomerEnums.Education[] educationEnums = CustomerEnums.Education.values();


    /**
     * 婚姻状态 0未婚 1 已婚 2 离异 3丧偶
     */
    @TagAnno(name = "婚姻状态 0未婚 1 已婚 2 离异 3丧偶")
    private Integer marritalStatus;

    @Transient
    @EnumObj(mapping = "marritalStatus")
    private CustomerEnums.Marrital[] marritalStatusEnums = CustomerEnums.Marrital.values();

    /**
     * 1 身份证
     */
    @TagAnno(name = "1 身份证")
    private Integer cardType;
    /**
     * 证件号码
     */
    @TagAnno(name = "证件号码")

    private String cardNum;
    /**
     * 家庭人数
     */
    @TagAnno(name = "家庭人数")
    private Integer familySize;
    /**
     * 健康状态   0 健康 1 一般 2 较差
     */
    @TagAnno(name = "健康状态 0 健康 1 一般 2 较差")
    private Integer heathStatus;

    @Transient
    @EnumObj(mapping = "heathStatus")
    private CustomerEnums.Health[] healthStatuses = CustomerEnums.Health.values();

    /**
     * 居住状态 0 自有 1按揭 2家人拥有3 住经营场所 4 租住 5 其他
     */
    @TagAnno(name = "居住状态 0 自有 1按揭 2家人拥有3 住经营场所 4 租住 5 其他")
    private Integer housing;

    @Transient
    @EnumObj(mapping = "housing")
    private CustomerEnums.Housing[] housingEnums = CustomerEnums.Housing.values();

    /**
     * 配偶姓名
     */
    @TagAnno(name = "配偶姓名")
    private String spouseName;
    /**
     * 配偶生日
     */
    @TagAnno(name = "配偶生日")
    private Date spouseBirthday;
    /**
     * 配偶工作地址
     */
    @TagAnno(name = "配偶工作地址")
    private String spouseWorkSpace;
    /**
     * 子女姓名
     */
    @TagAnno(name = "子女姓名")
    private String childName;
    /**
     * 子女生日
     */
    @TagAnno(name = "子女生日")
    private Date childBirthday;
    /**
     * 备注
     */
    @TagAnno(name = "备注")
    private String other;
    /**
     * 客户经理id
     */
    @TagAnno(name = "客户经理id")
    private String customerManagerId;
    /**
     * 其他信息
     */
    @TagAnno(name = "其他信息")
    private String additionalInfo;
    /**
     * 0,未申请 1,已申请 2,调查中 3,内审 4,审批 5,通过 6,拒绝 7,已放款
     */
    @TagAnno(name = "0,未申请 1,已申请 2,调查中 3,内审 4,审批 5,通过 6,拒绝 7,已放款")
    private Integer status;

    @Transient
    @EnumObj(mapping = "status")
    private CustomerEnums.CustomerStatus[] statusEnums = CustomerEnums.CustomerStatus.values();


    /**
     * 客户姓名
     */
    @TagAnno(name = "客户姓名")
    private String cname;


    /**
     * 创建时间
     */
    @TagAnno(name = "创建时间")
    private Date createTime;

    /**
     * 创建人
     */
    @TagAnno(name = "创建人")
    private String creater; /**
     *绑定的机构
     */
    private String orgId;

    /**
     * 是否通过验证 1 未通过验证 0 通过验证
     */
    private Integer verify;

    /**
     * 极鲜临时参数
     */
    private String tempValue;

    /**
     * 影像资料
     */
    private String avValue;

    public String getAvValue() {
        return avValue;
    }

    public void setAvValue(String avValue) {
        this.avValue = avValue;
    }

    public void setGenderEnum(CustomerEnums.Gender[] genderEnum) {
        this.genderEnum = genderEnum;
    }

    public void setEducationEnums(CustomerEnums.Education[] educationEnums) {
        this.educationEnums = educationEnums;
    }

    public void setMarritalStatusEnums(CustomerEnums.Marrital[] marritalStatusEnums) {
        this.marritalStatusEnums = marritalStatusEnums;
    }

    public void setHealthStatuses(CustomerEnums.Health[] healthStatuses) {
        this.healthStatuses = healthStatuses;
    }

    public void setHousingEnums(CustomerEnums.Housing[] housingEnums) {
        this.housingEnums = housingEnums;
    }

    public void setStatusEnums(CustomerEnums.CustomerStatus[] statusEnums) {
        this.statusEnums = statusEnums;
    }

    public String getTempValue() {
        return tempValue;
    }

    public void setTempValue(String tempValue) {
        this.tempValue = tempValue;
    }


    public Integer getVerify() {
        return verify;
    }

    public void setVerify(Integer verify) {
        this.verify = verify;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public ZyCustomer setCreateTime(Date createTime) {
        this.createTime = createTime;
        return this;
    }

    public CustomerEnums.Gender[] getGenderEnum() {
        return genderEnum;
    }


    public String getId() {
        return id;
    }

    public ZyCustomer setId(String id) {
        this.id = id;
        return this;
    }

    public String getCreater() {
        return creater;
    }

    public ZyCustomer setCreater(String creater) {
        this.creater = creater;
        return this;
    }

    public Integer getGender() {
        return this.gender;
    }

    public ZyCustomer setGender(Integer gender) {
        this.gender = gender;
        return this;
    }

    public Integer getCardType() {
        return cardType;
    }

    public ZyCustomer setCardType(Integer cardType) {
        this.cardType = cardType;
        return this;
    }

    public String getCardNum() {
        return cardNum;
    }

    public ZyCustomer setCardNum(String cardNum) {
        this.cardNum = cardNum;
        return this;
    }

    public String getPhoneNum() {
        return phoneNum;
    }

    public ZyCustomer setPhoneNum(String phoneNum) {
        this.phoneNum = phoneNum;
        return this;
    }

    public Date getBirthday() {
        return this.birthday;
    }

    public ZyCustomer setBirthday(Date birthday) {
        this.birthday = birthday;
        return this;
    }

    public Integer getEducation() {
        return this.education;
    }

    public ZyCustomer setEducation(Integer education) {
        this.education = education;
        return this;
    }


    public CustomerEnums.Education[] getEducationEnums() {
        return educationEnums;
    }


    public CustomerEnums.Marrital[] getMarritalStatusEnums() {
        return marritalStatusEnums;
    }


    public CustomerEnums.Health[] getHealthStatuses() {
        return healthStatuses;
    }


    public CustomerEnums.Housing[] getHousingEnums() {
        return housingEnums;
    }


    public CustomerEnums.CustomerStatus[] getStatusEnums() {
        return statusEnums;
    }


    public Integer getMarritalStatus() {
        return this.marritalStatus;
    }

    public ZyCustomer setMarritalStatus(Integer marritalStatus) {
        this.marritalStatus = marritalStatus;
        return this;
    }

    public Integer getFamilySize() {
        return this.familySize;
    }

    public ZyCustomer setFamilySize(Integer familySize) {
        this.familySize = familySize;
        return this;
    }

    public Integer getHeathStatus() {
        return this.heathStatus;
    }

    public ZyCustomer setHeathStatus(Integer heathStatus) {
        this.heathStatus = heathStatus;
        return this;
    }

    public Integer getHousing() {
        return this.housing;
    }

    public ZyCustomer setHousing(Integer housing) {
        this.housing = housing;
        return this;
    }

    public String getSpouseName() {
        return this.spouseName;
    }

    public ZyCustomer setSpouseName(String spouseName) {
        this.spouseName = spouseName;
        return this;
    }

    public Date getSpouseBirthday() {
        return this.spouseBirthday;
    }

    public ZyCustomer setSpouseBirthday(Date spouseBirthday) {
        this.spouseBirthday = spouseBirthday;
        return this;
    }

    public String getSpouseWorkSpace() {
        return this.spouseWorkSpace;
    }

    public ZyCustomer setSpouseWorkSpace(String spouseWorkSpace) {
        this.spouseWorkSpace = spouseWorkSpace;
        return this;
    }

    public String getChildName() {
        return this.childName;
    }

    public ZyCustomer setChildName(String childName) {
        this.childName = childName;
        return this;
    }

    public Date getChildBirthday() {
        return this.childBirthday;
    }

    public ZyCustomer setChildBirthday(Date childBirthday) {
        this.childBirthday = childBirthday;
        return this;
    }

    public String getOther() {
        return this.other;
    }

    public ZyCustomer setOther(String other) {
        this.other = other;
        return this;
    }

    public String getCustomerManagerId() {
        return customerManagerId;
    }

    public ZyCustomer setCustomerManagerId(String customerManagerId) {
        this.customerManagerId = customerManagerId;
        return this;
    }

    public String getAdditionalInfo() {
        return this.additionalInfo;
    }

    public ZyCustomer setAdditionalInfo(String additionalInfo) {
        this.additionalInfo = additionalInfo;
        return this;
    }

    public Integer getStatus() {
        return this.status;
    }

    public ZyCustomer setStatus(Integer status) {
        this.status = status;
        return this;
    }

    public String getCname() {
        return this.cname;
    }

    public ZyCustomer setCname(String cname) {
        this.cname = cname;
        return this;
    }

    public String getOrgId() {
        return this.orgId;
    }

    public ZyCustomer setOrgId(String orgId) {
        this.orgId = orgId;
        return this;
    }


}
